import request from './index.js'

/**
 * 新增课程
 * @param {Object} course 课程对象（courseName, courseDescription, courseClassify, courseCover）
 * @returns {Promise}
 */
export function addCourse(course) {
  return request({
    url: '/course/add',
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      // Authorization 自动在 request.js 拦截器里加
    },
    data: course
  })
}

/**
 * 新增课程分类
 * @param {Object} data { classifyName }
 * @returns {Promise}
 */
export function addCourseClassify(data) {
  return request({
    url: '/course/classify/add',
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    data
  })
}

/**
 * 查询所有课程分类（分页接口，默认查前1000条）
 * @returns {Promise}
 */
export function getAllCourseClassify() {
  return request({
    url: '/course/classify/page',
    method: 'GET',
    params: {
      page: 1,
      pageSize: 1000
    }
  })
}

/**
 * 分页查询课程信息
 * @param {Object} params { page, pageSize, courseName }
 * @returns {Promise}
 */
export function getCoursePage(params) {
  return request({
    url: '/course/page',
    method: 'GET',
    params
  })
}

// 删除课程
export function deleteCourseById(id) {
  return request({
    url: `/course/delete/${id}`,
    method: 'delete'
  })
}

// 获取所有课程
export function getCourseList() {
  return request({
    url: '/course/list',
    method: 'GET'
  })
}

// 更新课程信息
export function updateCourse(course) {
  return request({
    url: '/course/update',
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json'
    },
    data: course
  })
}

// 分页查询课程章节及视频
export function getCourseChapters({ courseId, page = 1, pageSize = 100 }) {
  return request({
    url: '/course/chapter/page',
    method: 'GET',
    params: {
      page,
      pageSize,
      courseId
    }
  })
}

// 批量添加章节
export function addChapters(courseId, chapters) {
  console.log('发送添加章节请求:', {
    url: `/course/chapter/addChapters/${courseId}`,
    data: chapters,
    contentType: 'application/json'
  });
  
  // 确保chapters是数组
  if (!Array.isArray(chapters)) {
    console.error('添加章节数据格式错误: chapters必须是数组');
    return Promise.reject(new Error('添加章节数据格式错误: chapters必须是数组'));
  }
  
  // 确保每个章节对象都有必要的字段 (根据API文档只保留必要字段)
  const validChapters = chapters.map(chapter => ({
    chapterId: chapter.chapterId || 0,
    chapterName: chapter.chapterName || '',
    chapterOrder: chapter.chapterOrder || 1
  }));
  
  return request({
    url: `/course/chapter/addChapters/${courseId}`,
    method: 'POST',
    headers: { 
      'Content-Type': 'application/json'
    },
    data: validChapters
  });
}

/**
 * 查询课程分类详细信息
 * @param {number} id 分类ID
 * @returns {Promise}
 */
export function getCourseClassifyById(id) {
  return request({
    url: `/course/classify/${id}`,
    method: 'GET'
  })
}

// 获取课程详情
export function getCourseDetail(id) {
  return request({
    url: `/course/${id}`,
    method: 'GET'
  })
}

// 获取课程详细信息（含章节和视频）
export function getCourseDetailed(courseId) {
  return request({
    url: `/course/detailed/${courseId}`,
    method: 'GET'
  })
}

// 获取课程视频列表
export function getCourseVideos(courseId) {
  return request({
    url: `/course/${courseId}/videos`,
    method: 'get'
  })
}

// 获取视频流URL
export function getVideoStreamUrl(videoId) {
  return `${import.meta.env.VITE_API_BASE_URL}/course/video/stream/${videoId}`
}

// 获取章节详细信息
export function getChapterDetail(chapterId) {
  return request({
    url: `/course/chapter/${chapterId}`,
    method: 'get'
  })
} 

// 根据课程ID查询所有章节
export function getChaptersByCourse(courseId) {
  return request({
    url: `/course/chapter/course/${courseId}`,
    method: 'get'
  })
}

/**
 * 添加视频
 * @param {Object} videoDTO 视频数据传输对象
 * @returns {Promise}
 */
export function addVideo(videoDTO) {
  return request({
    url: '/course/video/add',
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    data: videoDTO
  })
}

/**
 * 上传视频文件
 * @param {File} file 视频文件
 * @returns {Promise}
 */
export function uploadVideoFile(file) {
  const formData = new FormData()
  formData.append('file', file)
  return request({
    url: '/course/video/upload',
    method: 'POST',
    headers: {
      'Content-Type': 'multipart/form-data',
      // Authorization 自动在 request.js 拦截器里加
    },
    data: formData
  })
}

/**
 * 删除视频
 * @param {number} id 视频ID
 * @returns {Promise}
 */
export function deleteVideo(id) {
  return request({
    url: `/course/video/delete/${id}`,
    method: 'DELETE'
  })
}

/**
 * 删除章节
 * @param {number} chapterId 章节ID
 * @returns {Promise}
 */
export function deleteChapter(chapterId) {
  return request({
    url: `/course/chapter/delete/${chapterId}`,
    method: 'DELETE'
  })
}

/**
 * 更新视频信息
 * @param {Object} videoDTO 视频数据传输对象
 * @returns {Promise}
 */
export function updateVideo(videoDTO) {
  return request({
    url: '/course/video/update',
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json'
    },
    data: videoDTO
  })
}

/**
 * 删除课程分类
 * @param {number} id 分类ID
 * @returns {Promise}
 */
export function deleteCourseClassify(id) {
  return request({
    url: `/course/classify/delete/${id}`,
    method: 'DELETE',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  })
}

/**
 * 更新课程分类
 * @param {Object} data { classifyId, classifyName, description }
 * @returns {Promise}
 */
export function updateCourseClassify(data) {
  return request({
    url: '/course/classify/update',
    method: 'PUT',
    data,
    headers: {
      'Content-Type': 'application/json'
    }
  })
}

/**
 * 获取用户统计信息
 * @returns {Promise}
 */
export function getUserStatistics() {
  return request({
    url: '/auth/statistics',
    method: 'GET'
  })
}

/**
 * 获取课程统计信息
 * @returns {Promise}
 */
export function getCourseStatistics() {
  return request({
    url: '/course/statistics',
    method: 'GET'
  })
}

/**
 * 获取文章统计信息
 * @returns {Promise}
 */
export function getArticleStatistics() {
  return request({
    url: '/community/article-info/statistics',
    method: 'GET'
  })
}